package com.niiwoo.civet.trade.service.loan.antifraud;

import com.niiwoo.civet.trade.dto.request.loan.ProjectFlowExecuteRuntimeDTO;
import com.niiwoo.civet.trade.dto.response.loan.AgainstFakeModelV2CallbackRequestDTO;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 5.1.5借款反欺诈类
 * Created by lujing on 2018/4/19.
 */
public interface LoanAntiFraudDubboService {
    /**
     * 标准化社保贷反欺诈-首借用户
     * @param userId
     * @param projectId
     * @return
     */
    void libraFraudSocialSecurityFirst(String userId,Long projectId,Long flowExecuteId);


    /**
     * 标准化社保贷反欺诈-复借用户
     * @param userId
     * @param projectId
     */
    void libraFraudSocialSecurityNotFirst(String userId,Long projectId,Long flowExecuteId);

    /**
     * 标准化信用卡贷反欺诈-首借用户
     * @param userId
     * @param projectId
     */
    void libraFraudCreditCardFirst(String userId,Long projectId,Long flowExecuteId);

    /**
     *标准化信用卡贷反欺诈-复借用户
     * @param userId
     * @param projectId
     */
    void libraFraudCreditCardNotFirst(String userId,Long projectId,Long flowExecuteId);

    /**
     * 标准化消费贷首借反欺诈
     * 
     * @param userId
     * @param projectId
     * @param flowExecuteId
     * @param isMultiBorrow
     */
	default void libraFraudConsumeLoan(String userId, Long projectId, Long flowExecuteId, Boolean isMultiBorrow) {

    }

    /**
     * 标准化消费贷首借反欺诈
     *
     * @param userId
     * @param projectId
     * @param flowExecuteId
     */
    default void libraFraudConsumeLoan(String userId, Long projectId, Long flowExecuteId) {

    }
	
    /**
     * 标准化消费贷复借反欺诈
     * @param userId
     * @param projectId
     * @param flowExecuteId
     * @param isMultiBorrow
     */
	default void libraFraudConsumeLoanAgain(String userId, Long projectId, Long flowExecuteId, Boolean isMultiBorrow) {

    }

    /**
     * 标准化消费贷复借反欺诈
     * @param userId
     * @param projectId
     * @param flowExecuteId
     */
    default void libraFraudConsumeLoanAgain(String userId, Long projectId, Long flowExecuteId) {

    }

    /**
     *标准化小易贷反欺诈-首借用户
     * @param userId
     * @param projectId
     */
    void libraFraudSmallLoanFirst(String userId,Long projectId,Long flowExecuteId);

    /**
     *标准化小易贷反欺诈-复借用户
     * @param userId
     * @param projectId
     */
    void libraFraudSmallLoanNotFirst(String userId,Long projectId,Long flowExecuteId);

    /**
     * 标准化小易贷反欺诈-复借用户-回调
     */
    void loanAntiFraudBack(AgainstFakeModelV2CallbackRequestDTO againstFakeModelV2CallbackRequestDTO);

    /**
     * 5.1.5借款反欺诈补漏服务
     */
    void repairServiceAntiFraud(ProjectFlowExecuteRuntimeDTO projectFlowExecuteRuntimeDTO);

    /**
     * 流程重试
     * @param projectFlowExecuteRuntimeDTO
     */
    void retryTime(ProjectFlowExecuteRuntimeDTO projectFlowExecuteRuntimeDTO);
}
